home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / comm / cnet / fallout.lha / FallOut next >
Text File  |  1997-09-04  |  5KB  |  115 lines

  1. /**************************************************************************\
  2.                 $VER: Fall Out, v2.20 (4-Sep-97) by Dotoran!
  3. \**************************************************************************/
  4. options results;signal on SYNTAX;signal on ERROR;signal on IOERR
  5. a=sourceline(2);parse var a . ", "ver" ("vdate")" .;a=random(,,time("s"))
  6. tr=transmit;se=sendstring;gc=getchar;gu=getuser;gs=getscratch;qu=query
  7. a="rexxsupport.library";if ~show("l",a) then if ~addlib(a,0,-30) then exit
  8. parse source . . fp .;df=left(fp,max(lastpos('/',fp),lastpos(':',fp)))
  9.  
  10. BEGIN:
  11.     tr "f1n1" ; call SETUP ; call DISPLAY2 ; call UPDATE
  12.  
  13. MOVE:
  14.     if done=0 then signal WIN ; else tr "HcbMove! "
  15.     tr "HcfTurns: ca"turns"HcfTo Go: ce"done
  16.     se "18HcfSlide which Row? cb(ce1cb-ce9cb/c9Qcb)cf:ce     h4"
  17.     gc ; a=result ; call CHECK ; r=index("123456789Q",a)
  18.     if r=0 | r=10 then do ; tr "c9Quit" ; signal QUIT ; end ; else tr r
  19.     se "18HceHow many Spaces? cb(cf1cb-cf9cb/c9Qcb)ce:cf     h4"
  20.     gc ; a=result ; call CHECK ; s=index("123456789Q",a)
  21.     if s=0 | s=10 then do ; tr "c9Quit" ; signal QUIT ; end ; else tr s
  22.     se "18HcfRight of Left? cb(ceRcb/cd[ceLcd]cb/c9Qcb)cf:ce      h5"
  23.     gc ; a=result ; call CHECK ; d=index("RLQ",a) ; if d=0 then d=2
  24.     if d=3 then do ; tr "c9Quit" ; signal QUIT ; end
  25.     if d=1 then do ; tr "Right"
  26.         l1=right(l.r,s*3) ; l2=left(l.r,27-s*3) ; l.r=l1||l2 ; end
  27.     if d=2 then do ; tr "Left"
  28.         l1=left(l.r,s*3) ; l2=substr(l.r,s*3+1) ; l.r=l2||l1 ; end
  29.     call DISPLAY ; call UPDATE ; turns=turns+1
  30.   signal MOVE
  31.  
  32. WIN:
  33.     tr "18HcfYou did it in ce"turns" cfturns!n1"
  34.     se "18HcfWant to Play Again? cb(ceYcb/cencb)cf: ce"
  35.     gc ; a=result ; call CHECK
  36.     if a="N" then do ; tr "No." ; bufferflush ; exit ; end
  37.     tr "Yes!" ; signal BEGIN
  38.   exit
  39.  
  40. QUIT:
  41.     se "1HcfQuit? ce(cbyce/cbNce)cf: ce"
  42.     gc ; a=result ; call CHECK
  43.     if a~="Y" then do ; tr "No.h8h8" ; signal MOVE ; end
  44.     tr "Yes!n9" ; bufferflush
  45.   exit
  46.  
  47. UPDATE:
  48.     do i=9 to 1 by -1 ; ii=i-1
  49.         a1=index(l.i,"   ") ; if a1=0 then iterate i
  50.         b1=substr(l.ii,a1,3) ; tr "HcfThink: c9"a1"cf-cd"b1
  51.         if b1~="   " & b1~="°±²" then do ; flag=1 ; if i=9 then flag2=1
  52.             l.i=overlay(b1,l.i,a1,3) ; l.ii=overlay("   ",l.ii,a1,3) ; end
  53.     end i ; call DISPLAY ; if flag=1 then do ; flag=0 ; signal UPDATE ; end
  54.     if flag2=0 then return
  55.     do i=1 to 9 ; a=substr(l.9,i*3-2,3)
  56.         b=index("{1}{2}{3}{4}{5}{6}{7}{8}{9}",a)
  57.         if b>0 & substr(l.10,i*3-2,3)="   " then do ; flag2=0
  58.             l.9=overlay("   ",l.9,i*3-2,3) ; l.10=overlay(a,l.10,i*3-2,3)
  59.             done=done-1 ; signal UPDATE ; end
  60.     end i ; call DISPLAY
  61.   return
  62.  
  63. DISPLAY:
  64.     tr "2HcdÛcb"l.0"cdÛ"
  65.     do i=1 to 9 ; c=substr("9fc9fc9fc",i,1)
  66.     tr "ceC"i"cdÛc"c||l.i"cdÛce"i
  67.     end i ; tr "CcdÛcb"l.10"cdÛ"
  68.   return
  69.  
  70. DISPLAY2:
  71.     tr "f0Ccao1 F A L L    O U T    2 . 2 0o0"
  72.     tr "CcdÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜn1CcdÛcb"l.0"cdÛ"
  73.     do i=1 to 9 ; c=substr("9fc9fc9fc",i,1)
  74.     tr "ceC"i"cdÛc"c||l.i"cdÛce"i
  75.     end i ; tr "CcdÛcb"l.10"cdÛ"
  76.     se "Ccdßßce1cdßßce2cdßßce3cdßßce4cdßßce5cdßßce6cdßß"
  77.     tr "ce7cdßßce8cdßßce9cdßß"
  78.     tr "6HcfHow to cbPlay cfthe ceGame"
  79.     tr "5Hcc~~~~~~~~~~~~~~~~~~~~~"
  80.     tr "6HcfMove the numbers at"
  81.     tr "5Hthe cetop cfof the box to"
  82.     tr "5Hthe cabottom cfof the box"
  83.     tr "4Hby c9sliding cfthe cerows cfto"
  84.     tr "4Hplace a cdhole cfunder each"
  85.     tr "54Hcenumbercf. The game is cawon"
  86.     tr "54Hcfwhen you have moved cbALL"
  87.     tr "56Hcfnine cenumbers cfto the"
  88.     tr "57Hcabottom cfof the box!"
  89.     tr "60Hcb- c9Dotoran cb-"
  90.   return
  91.  
  92. SETUP:
  93.     do i=1 to 9 ; l.i="°±²°±²°±²°±²°±²°±²°±²°±²°±²"
  94.         do k=1 until substr(l.i,r*3-2,3)="°±²"
  95.             r=random(1,9,time("s")) ; end k
  96.             l.i=overlay("   ",l.i,r*3-2,3)
  97.     end i ; l.0="" ; l.10=copies("   ",9)
  98.     l0="{1}{2}{3}{4}{5}{6}{7}{8}{9}" ; changewhere "Fall_Out, "ver
  99.     do i=1 to 9 ; r1=random(1,length(l0)%3,time("s"))
  100.     l.0=l.0||substr(l0,r1*3-2,3) ; l0=delstr(l0,r1*3-2,3)
  101.     end i ; flag=0 ; flag2=0 ; turns=0 ; out="" ; done=9
  102.   return
  103.  
  104. exit
  105. CHECK:;if ARG() & ARG(1)~="###PANIC" then return ARG(1)
  106.   getcarrier;if result="TRUE" then if ARG() then return ARG(1);else return
  107.   logentry "Lost Carrier!!";bufferflush;exit
  108. SYNTAX:;ERROR:;IOERR:;e1="n1 Error: "rc" ("errortext(rc)")"
  109.   e2="  Line: "left(sigl,4)"File:";c="`"fp", "ver"'";e2=e2" "c;tr e1;tr e2
  110.   logentry e1;logentry e2;e=strip(translate(sourceline(sigl),"\{",""))
  111.   do while e~="";e3="Source: "left(e,37);tr e3;logentry e3;e=substr(e,38);end
  112.   bufferflush
  113. /**************************************************************************\
  114. \****************************************** Frontiers BBS (716)/823-9892 **/
  115.